Dim scr& Randomize Timer: screen _NewImage(800, 720, 32) Dim amt As Integer: amt = 3337 ' ammount of vehicles (amount) =) _display Type Code x As Single ' particle x-pos y As Single ' particle y-pos s As Single ' particle speed d As Integer ' e As Integer ' f As Integer ' g As Integer ' integers = node h As Integer ' using several to i As Integer ' "force" individual j As Integer ' random behaviour(??) End Type Dim Shared code(1 To amt) As Code For w = 1 To amt code(w).x = 0 code(w).y = 360 code(w).s = Rnd * .77 + .22 code(w).d = Int(Rnd * 2) code(w).e = Int(Rnd * 2) code(w).f = Int(Rnd * 2) code(w).g = Int(Rnd * 2) code(w).h = Int(Rnd * 2) code(w).i = Int(Rnd * 2) code(w).j = Int(Rnd * 2) Next w Do Cls For w = 1 To amt CIRCLE (code(w).x, code(w).y), 1, _RGB(255, 255, 0), , , , F code(w).x = code(w).x + code(w).s If code(w).x <= 100 Then If code(w).x > 50 Then 'first intersection If code(w).d = 1 Then code(w).y = code(w).y - code(w).s If code(w).d = 0 Then code(w).y = code(w).y + code(w).s End If End If If code(w).x <= 150 Then If code(w).x > 100 Then 'second intersection.. etc etc If code(w).e = 1 Then code(w).y = code(w).y - code(w).s If code(w).e = 0 Then code(w).y = code(w).y + code(w).s End If End If 'skipsecond: ' as you can see this is where it turns into spaghetti If code(w).x <= 200 Then If code(w).x > 150 Then If code(w).f = 1 Then code(w).y = code(w).y - code(w).s If code(w).f = 0 Then code(w).y = code(w).y + code(w).s End If End If 'skipthird: If code(w).x <= 250 Then If code(w).x > 200 Then If code(w).g = 1 Then code(w).y = code(w).y - code(w).s If code(w).g = 0 Then code(w).y = code(w).y + code(w).s End If End If 'skipfourth: If code(w).x <= 300 Then If code(w).x > 250 Then If code(w).h = 1 Then code(w).y = code(w).y - code(w).s If code(w).h = 0 Then code(w).y = code(w).y + code(w).s End If End If If code(w).x <= 350 Then If code(w).x > 300 Then If code(w).i = 1 Then code(w).y = code(w).y - code(w).s If code(w).i = 0 Then code(w).y = code(w).y + code(w).s End If End If If code(w).x > 350 Then If code(w).j = 1 Then code(w).y = code(w).y - code(w).s If code(w).j = 0 Then code(w).y = code(w).y + code(w).s End If 'keeping the particles from leaving screen If code(w).x > 400 And code(w).y < 10 Then code(w).x = code(w).x + code(w).s code(w).y = 10 End If If code(w).x > 400 And code(w).y > 710 Then code(w).x = code(w).x + code(w).s code(w).y = 710 End If ' this moves particles back to left side If code(w).x > 720 Then code(w).y = 360 If code(w).x > 720 Then code(w).x = 0 Next w _Display Loop